The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in the background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly or impliedly admitted as prior art against the present disclosure.
In conventional NAND Flash memory based systems, data is stored in NAND Flash memory through a two-step process. In the first step, an Error Correcting Unit (ECU) receives raw data and encodes it such that errors in the data can be detected, and in some embodiments, fixed. This allows the data to be checked for accuracy when it is read from the NAND memory at a later time. The ECU then transfers the encoded data, in the form of codewords, to a page register associated with the NAND memory. For example, the ECU may transfer a first codeword and a second codeword, one at a time, to the page register. The page register is a buffer that stores the encoded data until it can be stored in the NAND memory. For example, the page register may store the entire first codeword, followed by the entire second codeword.
In the second step, also referred to as the programming step, the encoded data is transferred from the page register to the NAND memory. The page register may transfer its entire contents to a page in the NAND memory in one step. For example, the page register may transfer the first codeword and the second codeword to a page in the NAND memory, so the page in the NAND memory can store the first codeword and the second codeword in the same format that they were stored in the page register. The second step can often be more time consuming than the first step. Hence, it may be desirable to reduce the time and complexity associated with the programming step.
The codewords stored in the NAND memory may accumulate errors over time. These errors may be created due to the physical structure of the NAND memory, as well as the continued use of the NAND memory. Different pages in the NAND memory may be associated with different error rates. It may be desirable to reduce the error rate for the encoded data as a whole.